home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / Bankperfect / bp.exe / Scripts / Export XML / export_xml.py < prev   
Text File  |  2007-03-18  |  2KB  |  45 lines

  1. import BP
  2.  
  3. CtgNames = {}
  4. for i, c in enumerate(BP.CategName):
  5.   p = c.find("=")
  6.   Idx = int(c[:p])
  7.   c = c[p+1:].strip()
  8.   Parent = BP.CategName[BP.CategParent[i]]
  9.   p = Parent.find("=")
  10.   PIdx = int(Parent[:p])
  11.   if Idx == PIdx: CtgNames[Idx] = c
  12.   else: CtgNames[Idx] = "%s:%s" %(Parent[p+1:].strip(), c)
  13.  
  14. def enc(s):
  15.   res = ""
  16.   for c in s:
  17.     if c.isalnum() or c in " $/%=*.@;:,_-()[]\\": res += c
  18.     elif c == "Ç": res += "€"
  19.     else: res += '&#%d;' %ord(c)
  20.   return res
  21.  
  22. acc = '  <compte nom="%s" num="%s" adresse_agence="%s" nom_agence="%s" num_agence="%s" nom_banque="%s" num_banque="%s" bic="%s" monnaie1="%s" monnaie2="%s" taux1="%s" taux2="%s" iban="%s" virtuel="%s">'
  23. opr = '    <operation date="%s" mode="%s" tiers="%s" info="%s" categ="%s" montant="%s" pointage="%s" />'
  24. s = ['<?xml version="1.0" encoding="UTF-8" ?>', '<comptes>']
  25. for i in range(BP.AccountCount()):
  26.   b, a = BP.AccountBranchNumber[i].split(" ")
  27.   c1, r1 = BP.AccountCurrency1[i].split("|")
  28.   c2, r2 = BP.AccountCurrency2[i].split("|")
  29.   v = BP.AccountName[i], BP.AccountNumber[i], BP.AccountBranchAddress[i], BP.AccountBranchName[i], a, BP.AccountBankName[i], b, BP.AccountBIC[i], c1, c2, r1, r2, BP.AccountIBAN[i], str(BP.AccountIsVirtual[i])
  30.   s.append(acc %tuple(map(enc, v)))
  31.  
  32.   for j in range(BP.OperationCount[i]):
  33.     ctg = BP.OperationCateg[i][j]
  34.     if ctg == -1: ctg = "Aucune"
  35.     else: ctg = CtgNames[ctg]
  36.     v = BP.OperationDate[i][j], BP.OperationMode[i][j], BP.Operationthirdparty[i][j], BP.OperationDetails[i][j], ctg, str(BP.OperationAmount[i][j]), str(BP.OperationMark[i][j])
  37.     s.append(opr %tuple(map(enc, v)))
  38.   s.append("  </compte>")
  39. s.append("</comptes>")
  40.  
  41. p = BP.BankPerfectFileName()
  42. p = "%s_export.xml" %p[:p.rfind(".")]
  43. open(p, "w").write("\n".join(s))
  44. if BP.MsgBox("Le fichier %s a ΘtΘ crΘΘ.\nSouhaitez-vous l'ouvrir ?" %p, 68) == 6:
  45.   BP.ShellExecute("open", p, "", 1)